<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>zdma: Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">zdma
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li class="current"><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="pages.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('index.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">zdma Documentation</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>ZDMA is a general purpose DMA designed to support memory to memory and memory to IO buffer transfers. ZynqMP has two instance of general purpose ZDMA. One is located in FPD (full power domain) which is GDMA and other is located in LPD (low power domain) which is ADMA.</p>
<p>GMDA &amp; ADMA are configured each with 8 DMA channels and and each channel can be programmed secure or non-secure. Each channel is divided into two functional sides, Source (Read) and Destination (Write). Each DMA channel can be independently programmed in one of following DMA modes.</p>
<ul>
<li>Simple DMA<ul>
<li>Normal data transfer from source to destination.</li>
<li>Write Only mode.</li>
<li>Read Only mode.</li>
</ul>
</li>
<li>Scatter Gather DMA<ul>
<li>Only Normal mode it can't support other two modes. In Scatter gather descriptor can be of 3 types</li>
</ul>
</li>
<li>Linear descriptor.</li>
<li>Linked list descriptor</li>
<li>Hybrid descriptor (Combination of both Linear and Linked list) Our driver will not support Hybrid type of descriptor.</li>
</ul>
<p><b>Initialization &amp; Configuration</b></p>
<p>The device driver enables higher layer software (e.g., an application) to communicate to the ZDMA core.</p>
<p><a class="el" href="group__zdma.html#gad882e6d7430871e5b71643c8be2512d5" title="This function initializes an ZDMA core. ">XZDma_CfgInitialize()</a> API is used to initialize the ZDMA core. The user needs to first call the <a class="el" href="group__zdma.html#ga1f24016eafb7226d1f8754082a24d95d" title="XZDma_LookupConfig returns a reference to an XZDma_Config structure based on the unique device id...">XZDma_LookupConfig()</a> API which returns the Configuration structure pointer which is passed as a parameter to the <a class="el" href="group__zdma.html#gad882e6d7430871e5b71643c8be2512d5" title="This function initializes an ZDMA core. ">XZDma_CfgInitialize()</a> API.</p>
<p><b> Interrupts </b> The driver provides an interrupt handler XZDma_IntrHandler for handling the interrupt from the ZDMA core. The users of this driver have to register this handler with the interrupt system and provide the callback functions by using XZDma_SetCallBack API. In this version Descriptor done option is disabled.</p>
<p><b> Virtual Memory </b></p>
<p>This driver supports Virtual Memory. The RTOS is responsible for calculating the correct device base address in Virtual Memory space.</p>
<p><b> Threads </b></p>
<p>This driver is not thread safe. Any needs for threads or thread mutual exclusion must be satisfied by the layer above this driver.</p>
<p><b> Asserts </b></p>
<p>Asserts are used within all Xilinx drivers to enforce constraints on argument values. Asserts can be turned off on a system-wide basis by defining, at compile time, the NDEBUG identifier. By default, asserts are turned on and it is recommended that users leave asserts on during development.</p>
<p><b> Building the driver </b></p>
<p>The <a class="el" href="struct_x_z_dma.html" title="The XZDma driver instance data structure. ">XZDma</a> driver is composed of several source files. This allows the user to build and link only those parts of the driver that are necessary.</p>
<p>This header file contains identifiers and register-level driver functions (or macros), range macros, structure typedefs that can be used to access the Xilinx ZDMA core instance.</p>
<pre>
MODIFICATION HISTORY:</pre><pre>Ver   Who     Date     Changes
</p>
<hr/>
<p>
1.0   vns     2/27/15  First release
1.1   vns    15/02/16  Corrected Destination descriptor address calculation
                       in XZDma_CreateBDList API
                       Modified XZDma_SetMode to return XST_FAILURE on
                       selecting DMA mode other than normal mode in
                       scatter gather mode data transfer and corrected
                       XZDma_SetChDataConfig API to set over fetch and
                       src issue parameters correctly.
      ms     03/17/17  Added readme.txt file in examples folder for doxygen
                       generation.
      ms     04/05/17  Modified comment lines notation in functions of zdma
                       examples to avoid unnecessary description to get
                       displayed while generating doxygen and also changed
                       filename tag to include the readonly mode example file
                       in doxygen.
1.3   mus     08/14/17 Update cache coherency information of the interface in
                       its config structure.
1.4   adk       11/02/17 Updated examples to fix compilation errors for IAR
                 compiler.
1.5   adk     11/22/17 Added peripheral test app support for ZDMA driver.
        12/11/17 Fixed peripheral test app generation issues when dma
                 buffers are configured on OCM memory(CR#990806).
1.6   adk     13/07/18 Fixed doxygen warnings in the driver(CR#1006353)
                 Fixed cppcheck warnings and coverity tool reported
                 errors in the driver(CR#1006353).
        19/07/18 Fixed cppcheck warning in the driver.
1.6   aru     08/18/18 Resolved MISRA-C mandatory violations.
1.7     adk     08/03/19 Added support for versal IP.
1.7   adk     18/03/19 Updated the writeonly mode example data verification
                 check to support versal adma IP.
1.10  hk      04/29/20 Enable Scatter Gather setup and Enable APIs for use
                       in applications directly.
1.14    adk     03/15/22 Fixed syntax errors in zdma_tapp.tcl file, when stdout
                         is configured as none.
</pre> </div></div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
